package com.example.emos.wx.controller;

import com.example.emos.wx.common.util.R;
import com.example.emos.wx.controller.form.TestSayHelloForm;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

/**
 * @ClassName : TestController
 * @Author : 骆发茂
 * @Date: 2021/10/10 16:28
 * @Description :
 */
@RestController/**json格式传输*/
@Api("测试web接口")/**告诉swagger这是要扫描到的类*/
@RequestMapping("/test")
public class TestController {

    @GetMapping("/hi")
    @ApiOperation("最简单的测试方法,method:hi()")/**加了ApiOperation才能给swagger用到*/
    public R hi(){
        return R.ok();
    }


    /**@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的)；
     * GET方式无请求体，所以使用@RequestBody接收数据时，前端不能使用GET方式提交数据，而是用POST方式进行提交
     */
    @ApiOperation("最简单的测试方法,method:sayhello()")/**加了ApiOperation才能给swagger用到*/
    @PostMapping("/sayhello")
    /**RequestBody，提交的是表单，封装成对象的内容*/
    public R sayhello(@Valid @RequestBody TestSayHelloForm form){
        /**@Valid，后端验证数据，方法是TestSayHelloForm，参数是form表单，会判断form的输入是否符合TestSayHelloForm的要求
         * TestSayHelloForm要求不能为空字符串，只能是2-15字之间的汉字*/
        return R.ok().put("message","Hello,"+form.getName());
    }


    @PostMapping("/addUser")
    @ApiOperation("/添加用户")/**加了ApiOperation才能给swagger用到*/
    //value填写权限类型，logical填写权限的关系，是and还是or？
    @RequiresPermissions(value = {"ROOT","USER:ADD"},logical = Logical.OR)
    public  R addUser(){
        return R.ok("添加用户成功");
    }
}